New collaboration models have been developed which operate in a “peer-to-peer” fashion without the intervention of a central authority. One of these latter models is built upon direct connections between users in a shared private “space”. In accordance with this model, users can be invited into, enter and leave a shared space during an ongoing collaboration session between other users. Each user has an application program called an “activity”, which is operable in his or her personal computer system, communication appliance or other network-capable device which generates a shared “space” in that user's computer. The activity responds to user interactions within the shared space by generating data change requests, called “deltas.” The activity also has a data-change engine component that maintains a local data copy and performs the changes to the data requested by the deltas. The deltas are distributed from one user to another over a network, such as the Internet, by a dynamics manager component. When the deltas are received by another user activity in the shared space, the local data copy maintained by that activity is also updated.
Subprograms within the activity program called “tools” perform various specific tasks. For example, an activity program might present various computer games. Within the overall game activity, tools might be available for a chess game and a tic-tac-toe game. Tools are defined by a template that is a document written in Extended Markup Language or XML. The XML template has various sections or tagged blocks that define various attributes of the tool that it defines.
An application constructed in accordance with this model consists of a collection of software components and resources, all of which are targeted for execution on a particular device. As used herein the term “components” will be used to refer to both the software code and the resources that are required for an application. This type of collaboration system is described in detail in U.S. patent application Ser. No. 09/357,007 entitled METHOD AND APPARATUS FOR ACTIVITY-BASED COLLABORATION BY A COMPUTER SYSTEM EQUIPPED WITH A COMMUNICATIONS MANAGER, filed Jul. 19, 1999 by Raymond E. Ozzie, Kenneth G. Moore, Robert H. Myhill and Brian M. Lambert; U.S. patent application Ser. No. 09/356,930 entitled METHOD AND APPARATUS FOR ACTIVITY-BASED COLLABORATION BY A COMPUTER SYSTEM EQUIPPED WITH A DYNAMICS MANAGER, filed Jul. 19, 1999 by Raymond E. Ozzie and Jack E. Ozzie; U.S. patent application Ser. No. 09/356,148 entitled METHOD AND APPARATUS FOR PRIORITIZING DATA CHANGE REQUESTS AND MAINTAINING DATA CONSISTENCY IN A DISTRIBUTED COMPUTER SYSTEM EQUIPPED FOR ACTIVITY-BASED COLLABORATION, filed Jul. 19, 1999 by Raymond E. Ozzie and Jack E. Ozzie and U.S. patent application Ser. No. 09/588,195 entitled METHOD AND APPARATUS FOR EFFICIENT MANAGEMENT OF XML DOCUMENTS, filed Jun. 6, 2000 by Raymond E. Ozzie, Kenneth G. Moore, Ransom L. Richardson and Edward J. Fischer.
Computer software developers are often releasing new or upgraded versions of their software program components in order to correct problems or to add new features that were incomplete or unavailable when the software was originally released. However, in a collaborative system, such as that described above, the distribution of software is complicated by the dynamic nature of the collaborative activity. For example, a user who is invited to join a shared space may have a software component version that is incompatible with the version being used by other members of the shared space. Consequently, the user may not be able to interact with anyone in the shared space until his or her local software component (or components) is upgraded to the current version and, since the user cannot interact with the shared space, the user may not be able to determine which component or components must be upgraded.
In fact, the user may not know that a component upgrade is necessary until he or she is at the point of joining the shared space and, thus, the software upgrade may have to made unobtrusively while the user is waiting or using the collaboration system with other shared spaces.
In addition, collaboration systems, such as that described above, are complicated and may comprise many software components. Many users will not be sufficiently knowledgeable to determine which software components need to be added, upgraded or replaced and to determine the locations at which the new components can be obtained. Some software components may incorporate other software that is located at yet other locations. The result is a complex and confusing download procedure. Other users will not be sufficiently knowledgeable to install and initialize those software components once they are obtained.
In addition, since there is no central location with which all users must interact, there is also no central location from which software component upgrades can be released. Therefore, users may need to contact several locations, including download “farms”, to obtain the necessary software components. Further, there is no central authority to enforce licensing restrictions or payment terms that may be imposed by some software developers on the transfer, or use, of software components that they developed. In addition, software components that incorporate other software components may require that licenses be obtained from several vendors, thereby making the licensing process complicated.
Therefore, there is a need for a method and apparatus for downloading, authenticating and installing software program components over a network without user intervention.
There is a further need for a method and apparatus for downloading, authenticating and installing software program components that can operate while the user is actively using a program that incorporates such components.
There is also a need for a method and apparatus for downloading, authenticating and installing software program components from diverse locations.
Finally, there is a need for a method and apparatus that can automatically enforce licensing restrictions without requiring that a user collaborate with the central location.